Hi 大家,昨天我們成功建置了 Rust 開發環境,今天就來深入了解 Cargo——Rust 生態系統的核心工具。Cargo 不只是一個套件管理器,更是一個完整的專案管理解決方案,包含建置系統、測試框架、文件產生器等功能。對於開發者來說,熟練掌握 Cargo 是提升開發效率的關鍵。
Cargo 是 Rust 的官方建置工具和套件管理器,它負責:
使用以下命令建立一個新的 Rust 專案:
cargo new my_first_project
cd my_first_project
這會建立以下的專案結構:
my_first_project/
├── Cargo.toml
├── src/
│ └── main.rs
└── .gitignore
如果要建立函式庫而非執行檔,使用 --lib
參數:
cargo new my_library --lib
Cargo.toml
是專案的設定檔,使用 TOML(Tom's Obvious, Minimal Language)格式:
[package]
name = "my_first_project"
version = "0.1.0"
edition = "2021"
authors = ["你的名字 <your.email@example.com>"]
description = "我的第一個 Rust 專案"
license = "MIT"
[dependencies]
# 這裡放置專案 Dependency
# 建置專案(開發版本)
cargo build
# 建置最佳化版本(發布版本)
cargo build --release
# 編譯並執行
cargo run
# 執行發布版本
cargo run --release
# 快速檢查程式碼是否能編譯(不產生執行檔)
cargo check
# 清理建置產生的檔案
cargo clean
編輯 Cargo.toml
檔案的 [dependencies]
區段:
[dependencies]
serde = "1.0"
tokio = { version = "1.0", features = ["full"] }
chrono = { version = "0.4", features = ["serde"] }
[dependencies]
# 精確版本
exact_version = "=1.2.3"
# 相容更新(預設)
compatible = "1.2"
# 波浪號需求(修補更新)
patch_updates = "~1.2.3"
# 插入號需求(相容更新)
minor_updates = "^1.2.3"
# 萬用字元
wildcard = "1.*"
只在開發和測試時需要的套件:
[dev-dependencies]
criterion = "0.5" # 效能測試
proptest = "1.0" # 屬性測試
讓我們建立一個簡單的命令列計算機專案:
cargo new simple_calculator
cd simple_calculator
[package]
name = "simple_calculator"
version = "0.1.0"
edition = "2021"
authors = ["你的名字 <your.email@example.com>"]
description = "一個簡單的命令列計算機"
[dependencies]
use std::io;
fn main() {
println!("=== 簡單計算機 ===");
println!("請輸入第一個數字:");
let mut input1 = String::new();
io::stdin().read_line(&mut input1).expect("讀取輸入失敗");
let num1: f64 = input1.trim().parse().expect("請輸入有效的數字");
println!("請輸入 (+, -, *, /):");
let mut operator = String::new();
io::stdin().read_line(&mut operator).expect("讀取輸入失敗");
let operator = operator.trim();
println!("請輸入第二個數字:");
let mut input2 = String::new();
io::stdin().read_line(&mut input2).expect("讀取輸入失敗");
let num2: f64 = input2.trim().parse().expect("請輸入有效的數字");
let result = match operator {
"+" => num1 + num2,
"-" => num1 - num2,
"*" => num1 * num2,
"/" => {
if num2 != 0.0 {
num1 / num2
} else {
println!("錯誤:不能除以零!");
return;
}
}
_ => {
println!("錯誤:不支援的運算子!");
return;
}
};
println!("結果:{} {} {} = {}", num1, operator, num2, result);
}
cargo run
對於大型專案,可以使用工作區來管理多個相關套件:
建立根目錄的 Cargo.toml
:
[workspace]
members = [
"calculator-core",
"calculator-cli",
"calculator-web"
]
這樣可以統一管理多個子專案,共享套件和建置設定。
# 程式碼格式化工具
rustup component add rustfmt
cargo fmt
# 程式碼檢查工具
rustup component add clippy
cargo clippy
# 安全性審核工具
cargo install cargo-audit
cargo audit
# 安裝 cargo-flamegraph(需要額外設定)
cargo install flamegraph
當你的專案準備好與社群分享時:
# 建立帳號並登入
cargo login
# 發布套件
cargo publish
今天我們深入了解了 Cargo 的核心功能,從基本的專案建立到套件管理,再到實際的計算機專案實作。Cargo 的設計哲學是「約定優於設定」,這意味著遵循標準的專案結構和命名慣例,就能獲得最佳的開發體驗。
今天我們已經掌握了:
明天我們將開始學習 Rust 的基礎語法,包括變數、資料型別和函式定義。這些是所有 Rust 程式的建構基石,掌握了這些概念,你就能開始編寫更複雜的應用程式了。
每一個熟練的 Rust 開發者都是從這些基礎開始的,持續練習是成功的關鍵!